#ifndef GULLENGINE_GRAPHICSMANAGER_H
#define GULLENGINE_GRAPHICSMANAGER_H

#include "Singleton.h"
#include "GullApplication.h"
#include "APIFactory.h"

namespace gull{
	namespace core {
		
		
		class GraphicsManager: public Singleton<GraphicsManager> 
		{
			friend class Singleton<GraphicsManager>;

			
		public:
			gullNotification initGraphicsContext();
			void refreshFrame();
			void reshapeFrame(int w, int h);
			static inline const GUIAPI* getGUIAPI();
			static inline API3D* get3DAPI();
			
			
		protected:
			
		private:
			GraphicsManager();
			~GraphicsManager();
			
			static const GUIAPI* s_wrapperGUI;
			static  API3D* s_wrapper3D;
			
		};
		
		
		const GUIAPI*GraphicsManager::getGUIAPI(){
			return s_wrapperGUI;
		}
		
		API3D* GraphicsManager::get3DAPI(){
			return s_wrapper3D;
		}

	}
}

#endif